<template>
<!-- 问题：我们不知道什么时候能够拿到 max 值，但是，总归有一个真正的 max 值 -->
<!-- 我们可以 使用 watch 属性监听，来 监听 父组件传递过来的 max 值，不管 watch 会被触发几次，但是，最后一次，肯定是一个 合法的 max 数值 -->
  <div class="mui-numbox" data-numbox-min='1' :data-numbox-max='max' style="height:25px;"> <!-- data-numbox-max 是 MUI 中表示数字框的最大值 -->
    <button class="mui-btn mui-btn-numbox-minus" type="button">-</button>
    <!-- 监听文本框的 change 事件，来动态获取选择到的数量 -->
    <input id="test" class="mui-input-numbox" type="number" :value="initcount" ref="numbox" @change="countChanged" /><!-- @change 表示每当值被修改了触发的事件 -->
    <button class="mui-btn mui-btn-numbox-plus" type="button">+</button>
  </div>

  <!-- 分析：子组件什么时候把 数据传递给父组件 -->
</template>

<script>
// 导入 mui 从而支持 初始化 数字框
import mui from "../../lib/mui/js/mui.min.js";

export default {
  data() {
    return {};
  },
  mounted() { // MUI 要求再使用数字框前要初始化
    // 当组件挂载到页面中之后，去初始化 数字框
    // console.log(this.max); // undefined，因为此时可能页面渲染了 数字框但还没拿到 goodsinfo
    mui(".mui-numbox").numbox();
  },
  methods: {
    countChanged() { // 改变购物车中商品数量的方法不能与 addToCar 共用，因为这会导致 在商品数量改变后会在原来的数字基础上加，所有要重写一个方法
      // 数量改变了
      // 每当数量值改变，则立即把最新的数量同步到 购物车的 store 中，覆盖之前的数量值
      this.$store.commit("updateGoodsInfo",{ 
        id: this.goodsid, 
        count: this.$refs.numbox.value
      });
    }
  },
  props: ["initcount","goodsid"]
};
</script>

<style lang="scss" scoped>

</style>
